package com.questetra.bpms.air.model
//package com.questetra.bpms.modeler.model
{
//    import com.questetra.bpms.modeler.util.CommonUtils;
//    import com.questetra.bpms.modeler.util.GlobalCommons;
    
    public class SelectItem
    {

        private var _id:String = "";
        private var _value:String = "";
        
        public function SelectItem()
        {
        }
        public function xmlToObject(xml:XML):void
        {
//            var ns:Namespace = ProcessDataDetail.DATA_DETAIL_NS;
            var ns:Namespace = new Namespace("process-data-definition-detail");
            this._id = xml.ns::["value"];
            this._value = xml.ns::["display"];
        }

//@@@        private function xmlToObjectForNamespace(xml:XML):void
//        {
//            //※xmlでいうvalueとこのモデルでのvalueが示すものは異なるので注意
//            var ns:Namespace = xml.namespace();
//            this._id = xml.ns::["value"]
//            this._value = xml.ns::["display"];
//        }

        /**
        * 引数で渡されたxmlからSelectItemの配列を返す
        * @param xml
        * @return list
        */
        public static function xmlToSelectItemList(xmlList:XMLList):Array /* of SelectItem */
        {
            var itemList:Array /* of SelectItem */ = new Array();
            if (xmlList.length() == 0)
            {
                return itemList;
            }
            var xml:XML = xmlList[0];
//            var itemXmlList:XMLList = xml.item;
//上記でうまくいかなかったので修正
            var ns:Namespace = new Namespace("process-data-definition-detail");
            var itemXmlList:XMLList = xml.ns::["item"];
            for each(var itemXml:XML in itemXmlList)
            {
                var item:SelectItem = new SelectItem();
                item.xmlToObject(itemXml);
                itemList.push(item);
            }

            return itemList;
        }
//        /**
//        * 引数で渡されたxmlからSelectItemの配列を返す（選択型向けでNmespaceを使うタイプ）
//        * @param xml @@@
//        * @return list
//        */
//        private static function xmlToSelectItemListForNamespace(xmlList:XMLList):Array /* of SelectItem */
//        {
//            var itemList:Array /* of SelectItem */ = new Array();
//            if (xmlList.length() == 0)
//            {
//                return itemList;
//            }
//            for each(var itemXml:XML in xmlList)
//            {
//                var item:SelectItem = new SelectItem();
////@@@                item.xmlToObjectForNamespace(itemXml);
//                itemList.push(item);
//            }
//
//            return itemList;
//        }
//        /**
//        * 引数で渡されたSelectItemの配列からxmlを返す
//        * @param list @@@
//        * @return xml
//        */
//        public static function selectItemListToXml(itemList:Array /* of SelectItem */):XML
//        {
//            if (itemList.length == 0)
//            {
//                return null;
//            }
//            var xml:XML = <items/>
//            for each (var item:SelectItem in itemList)
//            {
//                xml.appendChild(item.toXml());
//            }
//            return xml;
//        }
//        /**
//        * 引数で渡されたSelectItemの配列からxmlを返す（選択型向けでNmespaceを使うタイプ）
//        * @param list
//        * @return xml
//        */
//        private static function selectItemListToXmlForNamespace(processDataDefinition:ProcessDataDefinition):XML
//        {
//            var itemList:Array /* of SelectItem */ = processDataDefinition.selectItemsDetail.selectItems;
//
//            if (itemList.length == 0)
//            {
//                return null;
//            }
//            //xmlでのvalueとこのモデルでのvalueが示すものは異なるので注意
//            var xmlString:String = '<ns:select-detail xmlns:ns="process-data-definition-detail">' +
//                                    ProcessDataDefinitionHelper.toXmlStringConditionDataRuleForSelect(processDataDefinition) +
//                                    '<ns:items>';
//
//            for each (var item:SelectItem in itemList)
//            {
//                //@@@xmlString += item.toXmlStringforNamespace();
//            }
//            xmlString += '</ns:items>' +
//                            '</ns:select-detail>';
//
//            return new XML(xmlString);
//        }
//        /**
//        * このオブジェクトの配列を配列の要素もクローンにして返す
//        */
//        public static function getListClone(original:Array /* of SelectItem */):Array /* of SelectItem */
//        {
//            var copy:Array /* of SelectItem */ = new Array();
//            for each (var item:SelectItem in original)
//            {
//                copy.push(getClone(item));
//            }
//            return copy;
//        }
//
//        /**
//        * このオブジェクトのコピーを返す
//        */
//        public static function getClone(original:SelectItem):SelectItem
//        {
//            var copy:SelectItem = SelectItem(CommonUtils.getClone(original));
//            return copy;
//        }
//        
//        /**
//        * ２つのSelectItemの配列が同じかどうかチェック。
//        * @return 配列の長さと全ての要素が同じならばture。
//        */
//        public static function isSameSelectItemList
//            (selectItemsList1:Array /* of SelectItem */, selectItemsList2:Array /* of SelectItem */):Boolean
//        {
//            if (selectItemsList1.length != selectItemsList2.length)
//            {
//               return false; 
//            }
//            var length:int = selectItemsList1.length;
//            for (var i:int = 0; i<length; i++)
//            {
//                if ((selectItemsList1[i].value != selectItemsList2[i].value) ||
//                    (selectItemsList1[i].id != selectItemsList2[i].id))
//                {
//                   return false; 
//                }
//            }
//            return true;
//        }
//
//        /**
//        * SelectItemの配列をcsvにして返す
//        * @param array SelectItemの配列
//        * @return csv形式のSelectItemの情報
//        */
//        public static function toCsvFromArray(array:Array /* of SelectItem*/ ):String
//        {
//            //dataProviderからcsvを作成
//            var string:String = "";
//            for each (var item:SelectItem in array)
//            {
//                if (string != "")
//                {
//                    string = string + GlobalCommons.NEW_LINE_CODE;
//                }
//                string = string +
//                            item.id.toString() +
//                            ProcessDataDefinition.SELECT_ITEM_SEPARATOR +
//                            item.value;
//            }
//            return string;
//        }
//        /**
//        * csvをSelectItemの配列にして返す
//        * @param csv csv形式のSelectItemの情報
//        * @return SelectItemの配列
//        */
//        public static function toArrayFromCsv(csv:String):Array /* of SelectItem */
//        {
//            var itemList:Array /* of SelectItem */ = new Array();
//            var itemStringList:Array = selectItemTextToArray(csv);
//            for (var i:Number = 0; i < itemStringList.length; i++)
//            //for eachでは分割した文字列がとれなかったのでiを使う形で
//            {
//                //空行は無視
//                if (itemStringList[i] == "")
//                {
//                    continue;
//                }
//                //カンマで分割して処理、カンマがなければ無視、カンマが多い場合は2つめのカンマ以降は無視
//                var itemParts:Array /* of String */ =
//                    itemStringList[i].split(ProcessDataDefinition.SELECT_ITEM_SEPARATOR);
//                if (itemParts.length == 2)
//                {
//                    var item:SelectItem = new SelectItem();
//                    item.id = itemParts[0];
//                    item.value = itemParts[1];
//                    itemList.push(item);
//                }
//            }
//            return itemList;
//        }
//        /**
//        * 選択型の選択肢の改行を含む文字列を文字列の配列で返す
//        * @param 改行を含む文字列
//        * @return 文字列の配列
//        */
//        private static function selectItemTextToArray(text:String):Array /* of String*/
//        {
//            //選択肢として入力された文字列を1行ずつ処理
//            var newText:String = CommonUtils.convertNewLineCode(text);
//            var itemStringList:Array = newText.split(GlobalCommons.NEW_LINE_CODE);
//            return itemStringList;
//        }
//
        public function get id():String
        {
            return _id;
        }
        public function set id(value:String):void
        {
            _id = value;
        }
        public function get value():String
        {
            return _value;
        }
        public function set value(value:String):void
        {
            _value = value;
        }
//
////        private function toXmlStringforNamespace():String
////        {
////            //※xml定義でいうvalueとこのモデルでのvalueが示すものは異なるので注意
////            //'<'や'>'をエスケープできるようにxml型で処理
////            var xml:XML =
////                <ns:item xmlns:ns="process-data-definition-detail">
////                    <ns:value>{idComplement()}</ns:value>
////                    <ns:display>{_value}</ns:display>
////                </ns:item>
////
////            return xml.toString();
////        }
//
//        //もしidがない場合はvalueを補う
//        private function idComplement():String
//        {
//            if (this.id == "")
//            {
//                return this.value;
//            }
//            return this.id;
//        }
//
//        public function toXml():XML
//        {
//            //※xml定義でいうvalueとこのモデルでのvalueが示すものは異なるので注意
//            //'<'や'>'をエスケープできるようにxml型で処理
//            var xml:XML =
//                <item>
//                    <value>{idComplement()}</value>
//                    <display>{_value}</display>
//                </item>;
//            return xml;
//        }
    }
}